Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What Changed?
Eagerly visit all IDs in the program under analysis and register potential markers.
Rips out all the infrastructure that was used to do it lazily.
Refactors the
CollectingVisitor
into two structs, the visitor and then anSPDGGenerator
that runs the actual analysis. This separates the concerns out better. The former stores (among other things) a mutableMarkerDatabase
that it fills with the markers for local functions and types and it collects a vector of analysis targets.Once the visit is done it is converted into the
SPDGGenerator
which stores the read-onlyMarkerCtx
.Why Does It Need To?
Lazy markers were confusing. Markers on controllers were never registered. Also could cause surprising vacuity if markers were never encountered because e.g. their call sites happened in a closure.
Checklist
good record of what changed.
if necessary
.github/workflows/rust.yml
) either as compiler test or integration test.Or justification for their omission from CI has been provided in this PR
description.